Real-time conversations between conversation participants via their computer systems are becoming increasingly common. Such real-time conversations require that the participants be present at their computer systems (e.g., personal digital assistants) and able to respond when a communication is received. A common form of real-time conversation is provided by instant messaging services. An instant messaging service allows participants to send messages and have them received within a second or two by the other participants in the conversation. The receiving participants can then send responsive messages to the other participants in a similar manner. To be effective, a real-time conversation relies on the participants' becoming aware of, reviewing, and responding to received messages very quickly. This quick response is in contrast to conventional electronic mail systems in which the recipients of electronic mail messages respond to messages at their convenience.
Instant messaging services require a networking protocol to establish and manage communications between participants. These services may use various mechanisms to establish sessions, such as a “Session Initiation Protocol” (“SIP”). SIP is an application-layer control protocol that computer systems can use to discover one another and to establish, modify, and terminate sessions. SIP is an Internet proposed standard. Its specification, “RFC 3261,” is available at <http://www.ietf.org/rfc/rfc3261.txt>. A specification for extensions to SIP relating to event notifications, “RFC 3265,” is available at <http://www.ietf.org/rfc/rfc3265.txt>. Both of these specifications are incorporated herein in their entirety by reference.
A SIP network comprises entities that can participate in a dialog as an endpoint, server, or both. SIP supports four types of entities: user agent, proxy server, redirect server, and registrar. User agents initiate and terminate sessions by exchanging messages with other SIP entities. A user agent can be a user agent client, which is generally a computer system that initiates SIP requests, or a user agent server, which is a computer system that generally receives SIP requests and responds to such requests. As examples, “IP-telephones,” personal digital assistants, and any other types of computing systems may be user agents. A computer system can be a user agent client in one dialog and a user agent server in another, or may change roles during the dialog. A proxy server is an entity that acts as a server to clients and a client to servers. In so doing, proxy servers intercept, interpret, or forward messages between clients and servers. A redirect server accepts a SIP request and generates a response directing the client that sent the request to contact an alternate network resource. A registrar is a server that accepts registration information from SIP clients and informs a location service of the received registration information.
SIP supports two message types: requests, which are sent from a client to a server, and responses, which are sent from a server to a client, generally when responding to a request. A SIP message is comprised of three parts. The first part of a SIP message is a “start line,” which includes fields to indicate a message type and a protocol version. The second part of a SIP message comprises header fields whose values are represented as name-value pairs. The third part of a SIP message is the message's body, which is used to describe the session to be initiated or contain data that relates to the session. Message bodies may appear in requests or responses.
Typical instant messaging services provide a registration server and a presence server. An instant messaging user begins using the instant messaging service by registering an endpoint with the registration server, which can be a SIP registrar. The registration server provides location information about the user to other users of the instant messaging service. Once an instant messaging user is registered, the user sends periodic updates to the presence server specifying the user's current status. The presence server provides information about a user's status to other users that subscribe to a user's presence information.
To start a conversation, an inviting participant typically sends an invitation from an endpoint to the instant messaging service, which then forwards the invitation to one or more endpoints for the receiving participant. The invitation can take place using the SIP INVITE protocol. An endpoint for the receiving participant then accepts the invitation, forming a conversation between the two participants which is typically represented as a conversation window at each participant's instant messaging endpoint. The participants can then each type messages back and forth to each other until the conversation is terminated by either of the participants closing the conversation window.
It is becoming increasingly common for instant messaging participants to have multiple endpoints on which they would like to be available for real-time communications, and to periodically switch from one endpoint to another. For example, a knowledge worker sitting at a desktop computer may leave her desk to attend a meeting to which she takes a laptop where she would like to be available. A person who is away from his computer may have a mobile phone with instant messaging capabilities where he would like to receive real-time communications.
Typical instant messaging services only allow a participant to be available for real-time communications on a single endpoint at a time. If a participant is registered at one endpoint and then registers at another endpoint, typical instant messaging services unregister the first endpoint so that the participant will only receive invitations at the second endpoint.
Some instant messaging services allow a participant to be simultaneously registered with multiple endpoints. In such cases, the service typically designates one endpoint as the active endpoint that will receive invitations. Such services typically do not designate an endpoint as the active one until a participant has performed some activity at that endpoint such as moving the mouse or typing on the keyboard. In the example of a knowledge worker leaving her desktop to go to a meeting with a laptop, she may miss important communications during the time prior to her first use of the laptop since she will still be considered by the instant messaging service to be active at her desktop computer even though the laptop would be the best endpoint on which to reach her. For some endpoints such as mobile phones, determining when a participant is active can be difficult since a participant is frequently carrying his phone but is not using it.
It would be desirable to have a system that would allow a user to be registered with a real-time conversation system on multiple computing systems simultaneously and to receive incoming communications on any of the systems.